/**
 * 导航工具函数
 * 提供智能返回和页面跳转功能
 */

/**
 * 智能返回功能
 * 如果有上一页则返回，否则跳转到指定页面（默认首页）
 * @param {string} fallbackUrl - 没有上一页时跳转的页面，默认为首页
 * @param {boolean} isTabPage - fallbackUrl是否为tabBar页面，默认为true
 */
export function smartBack(fallbackUrl = '/pages/index/index', isTabPage = true) {
    const pages = getCurrentPages()

    if (pages.length > 1) {
        // 有上一页，执行返回操作
        console.log('检测到上一页，执行返回操作')
        uni.navigateBack()
    } else {
        // 没有上一页，跳转到指定页面
        console.log('没有上一页，跳转到:', fallbackUrl)
        if (isTabPage) {
            uni.switchTab({
                url: fallbackUrl
            })
        } else {
            uni.navigateTo({
                url: fallbackUrl
            })
        }
    }
}

/**
 * 安全的页面返回
 * 带错误处理的返回功能
 * @param {string} fallbackUrl - 返回失败时跳转的页面
 * @param {boolean} isTabPage - fallbackUrl是否为tabBar页面
 */
export function safeBack(fallbackUrl = '/pages/index/index', isTabPage = true) {
    const pages = getCurrentPages()

    if (pages.length > 1) {
        uni.navigateBack({
            success: () => {
                console.log('返回成功')
            },
            fail: (error) => {
                console.warn('返回失败，跳转到备用页面:', error)
                if (isTabPage) {
                    uni.switchTab({ url: fallbackUrl })
                } else {
                    uni.navigateTo({ url: fallbackUrl })
                }
            }
        })
    } else {
        // 没有上一页，直接跳转
        if (isTabPage) {
            uni.switchTab({ url: fallbackUrl })
        } else {
            uni.navigateTo({ url: fallbackUrl })
        }
    }
}

/**
 * 获取页面栈信息
 * @returns {object} 页面栈相关信息
 */
export function getPageStackInfo() {
    const pages = getCurrentPages()
    return {
        total: pages.length,
        current: pages[pages.length - 1],
        previous: pages.length > 1 ? pages[pages.length - 2] : null,
        canGoBack: pages.length > 1,
        stack: pages.map(page => page.route)
    }
}

/**
 * 跳转到首页
 * 统一的首页跳转方法
 */
export function goToHome() {
    uni.switchTab({
        url: '/pages/index/index'
    })
}

/**
 * 重新加载当前页面
 * 通过返回再进入的方式刷新页面
 */
export function reloadCurrentPage() {
    const pages = getCurrentPages()
    const currentPage = pages[pages.length - 1]

    if (pages.length > 1) {
        uni.navigateBack({
            success: () => {
                setTimeout(() => {
                    uni.navigateTo({
                        url: `/${currentPage.route}`
                    })
                }, 100)
            }
        })
    } else {
        // 如果是首页或只有一个页面，直接刷新
        uni.reLaunch({
            url: `/${currentPage.route}`
        })
    }
} 